package cn.iocoder.yudao.module.system.api.message;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.api.message.dto.MessageTypeCreateReqDTO;
import cn.iocoder.yudao.module.system.api.message.dto.MessageTypePageReqDTO;
import cn.iocoder.yudao.module.system.api.message.dto.MessageTypeRespDTO;
import cn.iocoder.yudao.module.system.api.message.dto.MessageTypeUpdateReqDTO;
import cn.iocoder.yudao.module.system.controller.admin.messageType.vo.MessageTypeCreateReqVO;
import cn.iocoder.yudao.module.system.controller.admin.messageType.vo.MessageTypePageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.messageType.vo.MessageTypeUpdateReqVO;
import cn.iocoder.yudao.module.system.convert.messageType.MessageTypeConvert;
import cn.iocoder.yudao.module.system.dal.dataobject.messageType.MessageTypeDO;
import cn.iocoder.yudao.module.system.service.messageType.MessageTypeService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class MessageTypeApiImpl implements MessageTypeApi{

    @Resource
    private MessageTypeService messageTypeService;


    @Override
    public Long createMessageType(MessageTypeCreateReqDTO createReqVO) {
        MessageTypeCreateReqVO messageTypeCreateReqVO=new MessageTypeCreateReqVO();
        BeanUtils.copyProperties(createReqVO,messageTypeCreateReqVO);
        return messageTypeService.createMessageType(messageTypeCreateReqVO);
    }

    @Override
    public Boolean updateMessageType(MessageTypeUpdateReqDTO updateReqVO) {
        MessageTypeUpdateReqVO messageTypeUpdateReqVO=new MessageTypeUpdateReqVO();
        BeanUtils.copyProperties(updateReqVO,messageTypeUpdateReqVO);
        messageTypeService.updateMessageType(messageTypeUpdateReqVO);
        return true;
    }

    @Override
    public Boolean deleteMessageType(Long id) {
        messageTypeService.deleteMessageType(id);
        return true;
    }

    @Override
    public MessageTypeRespDTO getMessageType(Long id) {
        MessageTypeDO messageType=messageTypeService.getMessageType(id);
        return MessageTypeConvert.INSTANCE.convert1(messageType);
    }

    @Override
    public List<MessageTypeRespDTO> getMessageTypeList() {
        return MessageTypeConvert.INSTANCE.convertList1(messageTypeService.getMessageTypeList());
    }

    @Override
    public PageResult<MessageTypeRespDTO> getMessageTypePage(MessageTypePageReqDTO pageVO) {
        MessageTypePageReqVO messageTypePageReqVO=new MessageTypePageReqVO();
        BeanUtils.copyProperties(pageVO,messageTypePageReqVO);
        PageResult<MessageTypeDO> messageTypeDOPageResult=messageTypeService.getMessageTypePage(messageTypePageReqVO);
        return MessageTypeConvert.INSTANCE.convertPage1(messageTypeDOPageResult);
    }


}
